package com.wangdao.wechatmall.exception;

import com.wangdao.wechatmall.bean.vo.admin.BaseRespVo;
import com.wangdao.wechatmall.bean.vo.wx.WXBaseRespVo;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @ClassName: CustomControllerAdvice
 * @Description 处理各类异常
 * @Author Xinhao Yi
 * @Date 2021/7/9  10:59
 */
@ControllerAdvice
public class CustomControllerAdvice {


    /**
     * 创建或编辑管理员时的空输入异常
     * AdminEmptyException.class
     *
     * @return WXBaseRespVo.fail(" 您输入的用户名或密码为空 ")
     */
    @ResponseBody
    @ExceptionHandler(AdminEmptyException.class)
    public WXBaseRespVo adminEmptyException() {
        return WXBaseRespVo.fail("您输入的用户名或密码为空");
    }

    /**
     * 管理员名字异常
     * AdminUserNameException.class
     *
     * @return WXBaseRespVo.fail(" 您输入的用户名长度不合要求 ， 用户名不允许大于10个字符 ")
     */
    @ResponseBody
    @ExceptionHandler(AdminUserNameException.class)
    public WXBaseRespVo userNameException() {
        return WXBaseRespVo.fail("您输入的用户名长度不合要求，用户名不允许大于10个字符");
    }

    /**
     * 管理员密码异常
     * AdminPassWordException.class
     *
     * @return WXBaseRespVo.fail(" 您输入的密码不合要求 ， 密码要求要有3到15个字符 ， 并且必须要含有字母 ")
     */
    @ResponseBody
    @ExceptionHandler(AdminPassWordException.class)
    public WXBaseRespVo passwordException() {
        return WXBaseRespVo.fail("您输入的密码不合要求，密码要求要有3到15个字符，并且必须要含有字母");
    }


    /**
     * 管理员用户名重复异常
     * AdminDuplicatedException.class
     */
    @ResponseBody
    @ExceptionHandler(AdminDuplicatedException.class)
    public WXBaseRespVo adminDuplicatedException() {
        return WXBaseRespVo.fail("您输入的名字已被占用，请换一个名字");
    }


    /**
     * 角色内容为空的异常
     * RoleEmptyException.class
     * @return
     */
    public WXBaseRespVo roleEmptyException(){
        return WXBaseRespVo.fail("您输入的角色名或描述为空");
    }



    /**
     * 角色名字重复异常
     * RoleDuplicatedException.class
     * @return
     */
    public WXBaseRespVo roleDuplicatedException(){
        return WXBaseRespVo.fail("您输入的名字已被占用，请换一个名字");
    }


    /**
     * 长度超过长度
     * AdminVarcharException.class
     */
    @ResponseBody
    @ExceptionHandler(AdminVarcharException.class)
    public BaseRespVo lengthOverflowException(AdminVarcharException e){return BaseRespVo.fail(e.getMessage());}


    /**
     * 价格异常
     * PriceException.class
     *
     * @return WXBaseRespVo.fail(" 您输入的用户名长度不合要求 ， 用户名不允许大于10个字符 ")
     */
    @ResponseBody
    @ExceptionHandler(PriceException.class)
    public WXBaseRespVo priceException(){
        return WXBaseRespVo.fail("底价只能为正整数或者小数");
    }
    /**
     *
     * 用户Id异常
     * */
    @ResponseBody
    @ExceptionHandler(AdminIdException.class)
    public WXBaseRespVo adminIdException(){
        return WXBaseRespVo.fail("用户Id只能为正整数");
    }

    /**
     *
     * 品牌商Id异常
     * */
    @ResponseBody
    @ExceptionHandler(BrandNameException.class)
    public WXBaseRespVo brandNameException(){
        return WXBaseRespVo.fail("输入字符过长");
    }


    /**
     *
     * 品牌商异常
     * */
    @ResponseBody
    @ExceptionHandler(BrandDescException.class)
    public WXBaseRespVo brandDescException(){
        return WXBaseRespVo.fail("介绍过长");
    }


    @ResponseBody
    @ExceptionHandler(CouponUnusbaleException.class)
    public WXBaseRespVo couponUnusbaleException(){
        return WXBaseRespVo.fail("活动已过期，该优惠卷不可用了哦");
    }

}
